数据结构 - Graph
啊 每天都好闲啊 … 今天来撸图吧
定义
由顶点与边组成的集合,用于描述顶点的流向的一种数据结构。
图的分类很多, 不过这里我们就不多加分类了。
实现
图的实现方式也有很多,常见教材上主要是邻接表的实现,这里一样也采用这种方式。
|
|
深度优先算法
深度优先(DFS)是图的遍历的一种算法。
其思路很简单:
- 选定起始顶点,并访问该顶点;
- 递归访问当前选中顶点的邻接表里面的未访问过的顶点;
eg: 比如我们选择之前的数据
- 初始顶点定位 A,访问 A;
- 第一次递归进入 B 顶点,访问 B;
- 继续递归,访问 B 顶点的邻接表,A 已被访问过,则访问下一个顶点 E。
- 继续递归,访问 E 顶点的邻接表,A 已被访问过且没有其他邻接顶点,回到上一次递归,访问 B 顶点的邻接顶点 F;
- 持续递归知道所有顶点都被标记为已访问;
|
|
广度优先算法
深度优先(BFS)是图的遍历的一种算法。
其思路是:
- 访问初始顶点;
- 将初始顶点的所有邻接顶点全部入队列;
- 按队列顺序一个个出列,访问顶点,同时将该顶点的所有未访问的邻接顶点全部入队;
- 持续迭代,直到队列为空;
eg:
- 初始顶点定位 A,访问 A;
- B、C、D、G 作为未访问的邻接顶点入队;
- 继续迭代,访问 B ,同时 B 的未访问的邻接顶点 E、F 入队;
- 接续迭代,访问 C,无符合条件的邻接顶点入队;
- 持续迭代,直到队列为空;
|
|
以上就是一个不知道什么分类的简单的图, 当然关于图的高级算法有很多,可是我不会 🙃
《 数据结构与算法 JavaScript 描述 》
作者: Listen
来源: http://swarosky44.github.io
链接: http://swarosky44.github.io/2017/06/03/数据结构 - Graph/
本文采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可